昨天文章裡架設一台簡單的API伺服器,呈現了伺服器可以處理請求者的資訊,同時也代表著我們可以運用伺服器搭配資料庫保存請求者的資料。
因此我們會在自己電腦(簡稱本機)架設資料庫(簡稱DB),接著開發一連串API功能,與資料庫連接做資料保存。
但是往往現實中,本機環境與產品線上環境必定會分開的。因為我們不可能把產品線上環境與本機環境的DB做共用,以免本機開發不小心把資料刪除了,產品線上環境的資料莫名消失了,大概也要被老闆給炒了!
所以實際上,產品線上環境肯定是獨立一個資料庫,並且帳號密碼會設定複雜一些,避免被有心人士揣測帳密,而被竊取或攻擊資料庫。而本機開發用的資料庫帳密肯定會設定簡單一點,方便工程師開發,不然還要輸入複雜的帳密肯定會從開發到放棄。
因此我們勢必要區分「本機」與「線上產品」的環境設定,但是要如何區分呢?就談到所謂的配置檔了
Config是一種用於區分各種專案環境的設定檔
的名詞。
簡單來說就是把每個環境會需要使用的資訊,分別寫在獨立的檔案(簡稱設定檔)。之後在啟動伺服器時候,再根據不同的環境,載入對應的設定檔,讓伺服器得知要連資料庫的帳密是什麼、或是呼叫合作方API的IP是多少...等。
舉例:
本機有一個配置檔,命名為local.toml
# local.toml
db_username = "root"
db_password = "123456"
線上產品環境有一個配置檔,命名為prod.toml
# prod.toml
db_username = "user_for_program"
db_password = "$2a$08$6uYZO.6UR2Um.NdBqFH/0ebgXjk4gdQO41C8RAPWhMFMX5nzGnQlK"
如上面舉例,我們可以在本機設定簡單的帳密,在產品環境設定複雜的帳密。而不需要在程式碼寫死資料庫的帳密。
從古自今,在工程師界的config檔案格式,從來都沒有固定,單單只看工程師們想選用什麼格式。
檔案格式也可以純粹是文字檔(.txt),而一般常使用的格式有xml、ini、json、yaml、toml
等格式。
其實就算沒有任何格式也可以,只要工程師在程式中有辦法讀取並解析就可以了。
工程師們開發專案時,除了寫寫程式、如何優化程式之外,其實也要考慮到程式運行在每個環境的時候,如何連接與專案產品關聯的服務。
使用配置檔(Config)也可以幫助團隊思考,需要搭建哪些與專案相依的資料庫、API服務。以及思緒專案之間共用的服務流程合不合理。
明天我們將實作如何在程式中載入config,去做使用。明天見囉
ps. 由於最近工作繁忙,差點趕不上截止時間,所以先發表文章以免中斷,敬請見諒